package com.lsy.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.util.Date;


@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    /**
     * 增加的时候执行的方法
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        //第一个参数不用管(元数据)
        //第二个参数,需要填充的字段名称
        //第三个参数是填充字段的类型
        //第四个参数是类型对应的默认值
        this.strictInsertFill(metaObject, "createTime", Date.class, new Date()); // 起始版本 3.3.0(推荐使用)


        this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date()); // 起始版本 3.3.0(推荐使用)

        //自动填充乐观锁
        this.setFieldValByName("version",1,metaObject);
    }

    /**
     * 修改的时候执行的方法
     * @param metaObject
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        this.strictUpdateFill(metaObject, "updateTime",Date.class, new Date()); // 起始版本 3.3.0(推荐)
    }
}